#include "heaptimer.h"
#include <iostream>

// 示例回调函数
void onTimeout() {
    std::cout << "Timeout occurred!" << std::endl;
}

// int main() {
//     // 创建一个HeapTimer实例
//     HeapTimer timer;

//     // 添加一个定时任务，假设5秒后执行onTimeout回调函数
//     int taskId1 = 1;
//     int timeoutMs1 = 2000; // 2 seconds in milliseconds
//     int taskId2 = 2;
//     int timeoutMs2 = 5000; // 2 seconds in milliseconds
//     timer.add(taskId1, timeoutMs1, onTimeout);
//     timer.add(taskId2, timeoutMs2, onTimeout);

//     // 可以继续添加其他定时任务...

//     // 模拟循环，不断检查是否有任务到期并执行
//     while (true) {
//         // 获取下一个任务的剩余超时时间
//         int nextTick = timer.GetNextTick();
//         std::cout << "nextTick:" << nextTick << std::endl;

//         if (nextTick == 0)
//         {
//             // 如果有任务已到期，执行一次tick()
//             timer.tick();
//         } else if (nextTick < 0) {
//             // 若堆为空，则退出程序
//             std::cout << "heap is null, no task, over!!!" << std::endl;
//             break;
//         } else
//         {
//             // 若没有任务到期，可以休眠一段时间后再检查
//             std::this_thread::sleep_for(std::chrono::milliseconds(nextTick));
//         }
//     }

//     // 当不再需要定时器时，可以调用clear()清空所有任务
//     timer.clear();

//     return 0;
// }

/*
输出：
    nextTick:1999
    Timeout occurred!
    nextTick:3000
    Timeout occurred!
    nextTick:-1
    heap is null, no task, over!!!
*/